package ru.chezclif.lern.conread;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import ru.chezclif.lern.conread.parser.PathDataInputProperties;
import com.thoughtworks.xstream.XStream;

/**
 * Сохранение настроек из хранилища данных в xml файл
 * 
 * @author Vit
 * 
 */
public class XmlSaver implements PathDataInputProperties {
	
	@Override
	/**
	 * По параметру filePath находится\создается файл, в него записываются все настройки и комментарии
	 * 
	 *@param filePath полный путь к оперируемому файлу
	 *@param propertyBuffer хранилище данных с настройками для записи в файл
	 */
	public void parseFile(String filePath, DataBuffer propertyBuffer) {
		Preconditions.notBlank(filePath);
		Preconditions.notNull(filePath);
		Preconditions.notNull(propertyBuffer);
		try {
			OutputStream outputStream;
			XStream xStream;
			outputStream = new FileOutputStream(new File(filePath));
			// Смена кодировки Writer xmlStreamWriter= new OutputStreamWriter(xmlOutputStream);
			xStream = new XStream();
			// xmlStream.alias("Properties", DataBuffer.class);
			xStream.toXML(propertyBuffer, outputStream);
			outputStream.close();
		} catch (FileNotFoundException e) {
			throw new ru.chezclif.lern.conread.exceptions.FileNotFoundException(e, filePath);
		} catch (IOException e) {
			throw new ru.chezclif.lern.conread.exceptions.FileNotFoundException(e, filePath);
		}
	}
}
